home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 4
/
Aminet 4 - November 1994.iso
/
aminet
/
comm
/
ums
/
ums109_1.lha
/
Tools
/
FixAccess.LHA
/
FixAccess
/
FixAccess.mod
< prev
Wrap
Text File
|
1993-08-26
|
3KB
|
86 lines
MODULE FixAccess;
IMPORT ums, umss:UmsSupport, Patterns,
MHArgs, Err, NoGuruErr, Dos, Utility, sys:SYSTEM;
TYPE
Lister* = RECORD (umss.Scanner)
pat: Patterns.Pattern;
END;
VAR
session : umss.Session;
cfg : MHArgs.Config;
name,pwd,server,user: ARRAY 80 OF CHAR;
setflags,unsetflags: LONGSET;
lister : Lister;
viewFlag : INTEGER;
dummy : LONGINT;
text : ums.STRPTR;
PROCEDURE (VAR me:Lister) DoField*( str: ums.STRPTR; flag: INTEGER);
VAR count: LONGINT;
BEGIN
IF (str^ # "") & me.pat.Match(str^) THEN
count := ums.UMSSelectTags( me.session.login,
ums.tagSelReadLocal, 1,
ums.tagSelMask, LONGSET{flag},
ums.tagSelMatch, LONGSET{flag},
ums.tagSelWriteUser, sys.ADR(user),
ums.tagSelSet, setflags,
ums.tagSelUnset, unsetflags,
Utility.done);
Dos.PrintF("%4ld - \"%s\"\n", count, str);
ELSE
Dos.PrintF("noac - \"%s\"\n", str);
END;
END DoField;
BEGIN
cfg := MHArgs.OpenConfig( "SYSOPNAME/A,PASSWORD/A,SERVER/K,USER/A,UNREAD/S",
"FixAccess - © 26.8.1993 by Martin Horneffer\n\n"
"Remake a users public access-rights.", NIL);
IF cfg=NIL THEN HALT(20) END;
IF cfg.GetString( "SYSOPNAME", name) &
cfg.GetString( "PASSWORD", pwd) &
cfg.GetString( "USER", user) THEN
IF ~cfg.GetString( "SERVER", server) THEN server := "" END;
IF cfg.GetBoolean("UNREAD") THEN
setflags := LONGSET{ums.ReadAccess,ums.ViewAccess};
unsetflags := LONGSET{ums.Old};
ELSE
setflags := LONGSET{ums.ReadAccess,ums.ViewAccess,ums.Old};
unsetflags := LONGSET{};
END;
session := umss.CreateSession( server, name, pwd);
text := ums.ReadUMSConfigTags( session.login,
ums.tagCfgUser, sys.ADR(user),
ums.tagCfgName, sys.ADR("READACCESS"),
Utility.done);
Err.Assert( text#NIL, "Cannot read READACCESS!");
lister.pat := Patterns.CreatePattern( text^, FALSE, NIL);
Err.Assert( lister.pat#NIL, "Cannot compile pattern!");
viewFlag := session.AllocFlag(TRUE);
dummy := ums.UMSSelectTags( session.login,
ums.tagSelMask, LONGSET{ums.ViewAccess},
ums.tagSelMatch, LONGSET{ums.ViewAccess},
ums.tagSelWriteLocal, 1,
ums.tagSelSet, LONGSET{viewFlag},
Utility.done);
lister.Do( session, ums.group, LONGSET{viewFlag}, LONGSET{viewFlag});
session.DeAllocFlag(viewFlag);
END;
END FixAccess.